import 'dart:io';

import 'package:flutter/material.dart';
import 'package:regular_assess/helper/global/user/logic.dart';
import 'package:regular_assess/helper/route/navigator.dart';
import 'package:top_foundation/component/dialog/dialog/index.dart';
import 'package:top_foundation/component/dialog/dialog_util.dart';

import '../../helper/utils/PrivacyView.dart';
import '../../helper/utils/methodchannelmanager.dart';
import '../../helper/utils/util.dart';
import 'index.dart';

class SplashLogic extends GetxController {
  SplashLogic();

  final state = SplashState();
  late UserController userCtrl;

  /// 在 widget 内存中分配后立即调用。
  @override
  void onInit() async {
    super.onInit();
    MethodChannelManager.initChannel();
  }

  /// 在 onInit() 之后调用 1 帧。这是进入的理想场所
  @override
  void onReady() {
    super.onReady();

    toPage();
  }

  void toPage() async {
    // state.timer?.cancel();
    await SpUtil().init();
    LocalizationStrings.register();
    userCtrl = UserController();
    var isFirstLaunch = SpUtil().getBool(StorageKeys.firstLaunch);
    if (isFirstLaunch == false) {
      toMain();
    } else {
      showPrivacyDialog();
    }
  }

  void toMain() async {
    ///清除用户信息
    UserController.instance.loginOutSuccess();
    await UserController.instance.initData();
    // userCtrl.toWeb();
    if (UserController.instance.isLogin) {
      UserController.instance.toWeb();
    } else {
      Get.toNamed(RouterPath.login);
    }
  }

  /// 在 [onDelete] 方法之前调用。
  @override
  void onClose() {
    super.onClose();
  }

  /// dispose 释放内存
  @override
  void dispose() {
    super.dispose();
  }

  void showPrivacyDialog() async {
    var appName = state.appName;
    final data =
        "亲爱的$appName用户，感谢您信任并使用${appName}APP!\n \n$appName十分重视用户权利及隐私政策并严格按照相关法律法规的要求，对《用户协议》和《隐私政策》进行了更新,特向您说明如下：\n1.为向您提供更优质的服务，我们会收集、使用必要的信息，并会采取业界先进的安全措施保护您的信息安全；\n2.基于您的明示授权，我们可能会获取设备号信息、包括：设备型号、操作系统版本、设备设置、设备标识符、MAC（媒体访问控制）地址、IMEI（移动设备国际身份码）、软件安装列表。（以保障您的账号与交易安全），且您有权拒绝或取消授权；\n3.您可灵活设置账号的功能内容和互动权限，您可在《隐私政策》中了解到权限的详细应用说明；\n4.未经您同意，我们不会从第三方获取、共享或向其提供您的信息；\n5.您可以查询、更正、删除您的个人信息，我们也提供账户注销的渠道。\n \n请您仔细阅读并充分理解相关条款，其中重点条款已为您黑体加粗标识，方便您了解自己的权利。如您点击“同意”，即表示您已仔细阅读并同意本《用户协议》及《隐私政策》，将尽全力保障您的合法权益并继续为您提供优质的产品和服务。如您点击“不同意”，将可能导致您无法继续使用我们的产品和服务。";
    var action = await showWindow(
      m: DialogModel(
        title: '用户隐私政策',
        content: Container(
          color: Colors.white,
          padding: const EdgeInsets.all(12.0),
          child: PrivacyView(
            data: data,
            keys: const ['《用户协议》', '《隐私政策》'],
            keyStyle: const TextStyle(color: Colors.red),
            onTapCallback: (String key) {
              if (key == '《用户协议》') {
                Get.toAgreeAssessment();
              } else if (key == '《隐私政策》') {
                Get.toAgreePrivacy();
              }
            },
          ),
        ),
      ),
    );
    if (action == 0) {
      exit(0);
    }
    if (action == 1) {
      SpUtil().setBool(StorageKeys.firstLaunch, false);
      toPage();
    }
  }
}
